Developer applications, e-mail applications, word processing applications, browser applications, etc. are relied upon to communicate and process information. Many application users like to tailor or customize their applications according to habit, preference, and other needs. For example, many applications allow a user to tailor the interface according to particular preferences, such as by adding macros, modifying forms, using a certain font, etc. However, the personalized customizations are usually lost or overwritten once an application is upgraded to a new version or otherwise updated. This can be a very frustrating experience, since the user has to start over from scratch to recreate the lost customizations.
In a corresponding manner, developers and programmers attempt to customize applications to operate in a certain environment or under certain conditions and/or constraints. However, each application is typically integrally coupled to a proprietary customization procedure. The proprietary procedures provide a substantial impediment for users who like to implement their own customizations. The procedures are essentially “locked away” requiring support to implement any customizations from a limited number of software service sources.
In some cases, a provider can ship source code or build proprietary declarative models to allow a certain level of user customization. The former can cause many problems and it becomes virtually impossible to upgrade without months of preparation and days of downtime. The latter implies a proprietary model of metadata which forces the application developer to build their own tools, debuggers, run-times and models. In current applications, it is uncommon for a provider to ship a proprietary metadata model with an application. Many providers treat these metadata models as a company or trade secret. Like other company secrets, a provider's metadata model can be more valuable if not shared with the end-user or general public.